const cart = {
	state: {
		// 购物车数量
		cart_num: 0,
		// 编辑
		editShow: false,
		// 购物车列表
		cart_list: [],
		// 全选
		selectAll: false
	},
	mutations: {
		// 更改购物车列表
		changeCartList(state, data) {
			state.cart_list = data
		},
		// 更改编辑状态
		changeEditShow(state) {
			state.editShow = !state.editShow
			if (!state.editShow) {
				state.cart_list.forEach(item => {
					item.isShow = false
				})
			}
		},
		// 单选
		setOne(state, index) {
			state.cart_list[index].isShow = !state.cart_list[index].isShow
			// 遍历购物车列表的isShow
			if (!state.cart_list.some(item => {
					return item.isShow == false
				})) {
				// 如果全为true 全选也为true
				state.selectAll = true
			} else {
				// 如果有一个不为true 全选就为fals
				state.selectAll = false
			}
		},
		// 全选
		setAll(state) {
			state.selectAll = !state.selectAll
			state.cart_list.forEach(item => {
				item.isShow = state.selectAll
			})
		},
		// 更改购物车数量
		changeCartNum(state, num) {
			state.cart_num = num
			// tabbar购物车加小红点
			// uni.setTabBarBadge({
			// 	index: 3,
			// 	text: num + ''
			// })
		},
		// 更改购物车中商品的数量
		changeShopNum(state, param) {
			state.cart_list[param.index].num = param.num
		}
	},
	actions: {
		// 获取购物车列表
		getCartList({
			state,
			commit
		}, param) {
			let data = [{
				name: '1',
				money: 100,
				num: 1
			}, {
				name: '2',
				money: 200,
				num: 2
			}, {
				name: '3',
				money: 300,
				num: 3
			}]
			data.forEach(item => {
				item.isShow = false
			})
			commit('changeCartList', data)
			commit('changeCartNum', data.length)
		},
		// 加入购物车
		addCart({
			state,
			commit
		}, id) {
			api.toast('添加成功', 'none')
			commit('changeCartNum', state.cart_num + 1)
		},
		// 删除购物车
		deleteCart({
			state,
			commit,
			dispatch
		}, param) {
			uni.showModal({
				content: '是否要删除商品？',
				success: async modal => {
					if (modal.confirm) {
						api.toast('删除成功', 'success')
						dispatch('getCartList')
					}
				}
			})
		},

	},
	getters: {
		// 拿到购物车列表中被选中的商品
		selectShops(state) {
			return state.cart_list.filter(item => item.isShow)
		},
		// 选中商品的数量
		selectNum(state, getters) {
			return getters.selectShops.length
		},
		// 总金额
		allMoney(state, getters) {
			let money = 0
			getters.selectShops.forEach(item => {
				money += item.money * item.num
			})
			return money
		}
	}
}

export default cart
